package com.free.front.bf.product;

import com.deco.dao.domain.table.PartsInfo;
import com.deco.domain.vo.product.PartsCategoryVo;
import com.deco.domain.vo.product.PartsInfoVedioVo;
import com.deco.domain.vo.product.PartsInfoVo;
import com.deco.service.product.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 功能概述:
 * </p>
 * <p>
 * 功能详述:
 * </p>
 */
@Component
public class ProductCategoryBf {
    /*========================================================================*
     *                         Public Fields (公共属性)
     *========================================================================*/

    /*========================================================================*
     *                         Private Fields (私有属性)
     *========================================================================*/

    @Autowired
    private PartsCategoryService service;

    @Autowired
    private PartsInfoService partInfoService;

    @Autowired
    private PartsInfoItemService partItemsService;

    @Autowired
    private PartsInfoImageService partImageService;

    @Autowired
    private PartsInfoVedioService partVedioService;
    /*========================================================================*
     *                         Construct Methods (构造方法)
     *========================================================================*/

    /*========================================================================*
     *                         Public Methods (公有方法)
     *========================================================================*/

    public PartsInfoVedioVo getVedio(int partsInfoId){
        List<PartsInfoVedioVo>  res = partVedioService.getPartsInfoVedios(partsInfoId);
        if(res != null && res.size() >0){
            return res.get(0);
        }
        return null;
    }

    public List<PartsCategoryVo> selectAllEnableCategorys(){
        return service.selectAllEnableCategorys();
    }

    public List<PartsCategoryVo> selectListByConditionForFront(PartsCategoryVo condition){
        if(condition == null){
            condition = new PartsCategoryVo();
        }
        condition.setStatus(1);
        return service.selectListByConditionForFront(condition);
    }

    public List<PartsCategoryVo> selectAllEnbaleCategorysDirect(PartsCategoryVo condition){
        return service.selectAllEnbaleCategorysDirect(condition);
    }

    public Map<String,Object> selectCatagoryDispInfo(Integer partsInfoId){
        List<PartsCategoryVo> categoryInfos = selectListByConditionForFront(null);
        if(categoryInfos == null){
            return null;
        }
        if(partsInfoId == null){
            for(PartsCategoryVo vo : categoryInfos) {
                if (vo.getParts() != null && vo.getParts().size() > 0) {
                    vo.setActive(1);
                    partsInfoId = vo.getParts().get(0).getId();
                    vo.getParts().get(0).setActive(1);
                    vo.setActive(1);
                    break;
                }
            }
        }else{
            for(PartsCategoryVo vo : categoryInfos) {
                if (vo.getParts() != null && vo.getParts().size() > 0) {
                    for(PartsInfoVo pinfo : vo.getParts()) {
                        if(pinfo.getId() == partsInfoId){
                            pinfo.setActive(1);
                            vo.setActive(1);
                            break;
                        }
                    }
                }
            }
        }
        Map<String,Object> resmap = new HashMap<>();
        resmap.put("categoryInfo",categoryInfos);
        resmap.put("partInfo",partInfoService.getPartsInfo(partsInfoId));
        resmap.put("partItems",partItemsService.getPartsInfoItems(partsInfoId));
        resmap.put("partImgs",partImageService.partsInfoImageByParId(partsInfoId));
        resmap.put("partVedios",partVedioService.getPartsInfoVedios(partsInfoId));
        return resmap;
    }


    /*========================================================================*
     *                         Private Methods (私有方法)
     *========================================================================*/
}
